package lx3;

import java.io.*;
import java.net.Socket;

//客户端：将本地文件上传到服务器。接收服务器的反馈。
//服务器：接收客户端上传的文件，上传完毕之后给出反馈。
public class Client {
    public static void main(String[] args) throws IOException {
           /*
        流程:1.用FileInputStream读取本地文件
        2.读到内存中以后，再用网络的io传递给服务器
        3.服务器接收到文件以后，用FileOutputStream写入到本地
        4.当写入完毕以后，服务器给出反馈---- 写入成功
         */

        //读取本地文件中的数据 aa.jpg
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream("aa.jpg"));
        //创建Socket对象，连接服务器
        Socket socket = new Socket("127.0.0.1", 8888);
        //读取本地文件数据然后向通道写出数据（服务器当中）
        OutputStream os = socket.getOutputStream();
        BufferedOutputStream bos = new BufferedOutputStream(os);
        //开始读取数据
        int len;
        byte[] bytes = new byte[1024];
        while ((len = bis.read(bytes)) != -1) {
            //边读边写
            bos.write(bytes, 0, len);
        }
        //往服务器写一个结束标记，相当于结束输出流
        socket.shutdownOutput();

        //接收服务器的消息
        InputStream is = socket.getInputStream();
        //服务器发送的有中文所以我们用转换流读取
        InputStreamReader isr = new InputStreamReader(is);
        int b;
        while ((b = isr.read()) != -1) {
            System.out.print((char) b);
        }

        //关闭资源
        socket.close();
    }
}
